package com.xhwl.data.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xhwl.common.dto.cent.sdata.RoleDetailDTO;
import com.xhwl.common.enums.config.RoleTypeEnum;
import com.xhwl.common.pojo.ResultJson;
import com.xhwl.common.pojo.cent.sdata.AccountRole;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @description:
 * @author:
 * @create: 2020-11-25
 **/
@RestController
public interface IAccountRoleService extends IService<AccountRole> {

    /**
     * 根据角色id分组 挂钩的账号的数量
     *
     * @return
     */
    List<RoleDetailDTO> getCountByRoleId(List<Integer> roleIds);

    /**
     * 根据账号id查找所属的所有角色id
     *
     * @param accountId
     * @return
     */
    List<Integer> findRoleIdByAccountId(Integer accountId);

    /**
     * 根据角色id查找关联的账号id 列表
     *
     * @param roleIdList
     * @return
     */
    List<Integer> findByRoleId(List<Integer> roleIdList);


    /**
     * 根据角色类型查找关联的账号id 列表
     *
     * @param roleTypeEnum
     * @return
     */
    List<Integer> findByRoleType(RoleTypeEnum roleTypeEnum);


    /**
     * 删除账号角色  关联关系
     *
     * @param accountIdList
     * @param roleIdList
     */
    void deleteAccountRole(List<Integer> accountIdList, List<Integer> roleIdList);


    /**
     * 新增账号角色 关联关系
     *
     * @param accountId
     * @param projectIdList
     */
    void insertAccountRole(Integer accountId, List<Integer> projectIdList);


    /**
     * 为某个游客账号添加某个项目的权限
     *
     * @param accountId
     * @param projectId
     */
    @RequestMapping(value = "/account-role-service/add-visitor-role", method = RequestMethod.POST)
    ResultJson addVisitorByProjectId(@RequestPart(value = "accountId") Integer accountId,
                                     @RequestPart(value = "projectId") Integer projectId,
                                     @RequestPart("industryId") Short industryId);
}
